Data processing systems (including single-chip systems) which utilize one or more host processors (for example microprocessors) and one or more co-processors (for example further microprocessors or digital signal processors) under control of the host processor(s) are well known in the art. In such systems, the co-processor is typically configured to perform desired functions by storing associated program information in a ROM (or other program memory) associated with the co-processor. The operational capability of the co-processor thus corresponds to, and is limited by, the functionality defined by the program(s) stored in its associated ROM.
It is therefore useful to have the capability of changing the program(s) in the ROM (or other program memory) associated with the co-processor. In many conventional systems, new programs can be provided by simply installing a new ROM, or electronically programming the existing ROM in place on a system board, whether the ROM is separate from the co-processor or integrated within the co-processor. However, replacing the programs available to the co-processor is difficult when, for example, the co-processor and its associated program memory are embedded in an integrated circuit together with the host processor, or when the co-processor and its program memory are located remotely from the host processor and hence remotely from the user of the system.
It is therefore desirable to provide a capability of changing the program(s) available to the co-processor without the requirement of physically accessing the co-processor.
According to the invention, a host processor can download a program to a co-processor by invoking a remote procedure call (RPC) mechanism. The RPC mechanism advantageously effectuates the program downloading without requiring the user to physically access program memory associated with the co-processor. The RPC mechanism is also advantageously used to retrieve (from the co-processor) information about the co-processor, to inspect memory associated with the co-processor, and to set configuration parameters of the co-processor.